﻿using Aop.Api;
using System;
using System.Collections.Generic;
using System.Text;

namespace ServiceCore.Tool.AliFace
{

    public class ZimIdAndZimInitClientData
    {
        public string zimId { get; set; }
        public string zimInitClientData { get; set; }
    }
    //刷脸初始化类
    public class Zimmetainfo : AopObject
    {
        public string apdidToken { get; set; }
        public string appName { get; set; }
        public string appVersion { get; set; }
        public string bioMetaInfo { get; set; }
        public string deviceModel { get; set; }
        public string deviceType { get; set; }
        public string deviceNum { get; set; }
        public string storeCode { get; set; }
        public string brandCode { get; set; }
        public string osVersion { get; set; }
        public string remoteLogID { get; set; }
        public string zimVer { get; set; }
        public MerchantInfo merchantInfo { get; set; }
        public MachineInfo machineInfo { get; set; }

    }
    public class MachineInfo : AopObject
    {

        public string cameraDriveVer { get; set; }
        public string cameraModel { get; set; }
        public string cameraName { get; set; }
        public string cameraVer { get; set; }
        public string ext { get; set; }
        public string group { get; set; }
        public string machineCode { get; set; }
        public string machineModel { get; set; }
        public string machineVer { get; set; }


    }
    public class MerchantInfo : AopObject
    {
        public string appId { get; set; }
        public string deviceNum { get; set; }
        public string merchantId { get; set; }
        public string partnerId { get; set; }
        public double pay_amount { get; set; }
        public string storeCode { get; set; }
        public string pay_currency { get; set; }
    }
    public class FtokenQueryResponseJson : AopObject
    {
        public string customer_ftoken_query_response { get; set; }
    }
    //查询UID，用于刷脸生活

    public class customer_ftoken_query_response : AopObject
    {
        public string code { get; set; }
        public string msg { get; set; }
        public string uid { get; set; }
    }
    //支付类
    public class alipayParameter
    {
        //订单号
        public string out_trade_no { set; get; }
        //固定刷脸的代码
        public string scene { set; get; } = "security_code";
        //项目名
        public string subject { set; get; }
        //门店ID 跟storeCode一样
        public string store_id { set; get; }
        //金额
        public string total_amount { set; get; }
        //跟deviceNum一样
        public string terminal_id { set; get; }
        public string timeout_express { set; get; } = "3m";
        public string terminal_params { set; get; }
        public string auth_code { set; get; }

    }
    public class FacePayParams
    {
        public string order_No { get; set; }
        public string ftoken { get; set; }

        public string terminal_id { get; set; }

        public string store_id { get; set; }

        public string mchId { get; set; }
        public string terminal_params { get; set; }
    }

    public class sub_mch_settlement
    {
        /// <summary>
        ///  运营商编制的设备ID
        /// </summary>
        public string terminal_id { get; set; }
        /// <summary>
        /// 机器地址信息
        /// </summary>
        public delivery_address_model address { get; set; }
        /// <summary>
        /// 自助售卖机场景信息 
        /// </summary>
        public scene_model scene { get; set; }
    }


    /// <summary>
    /// 设备入驻入参
    /// </summary>
    public class Mch_Settlement_params
    {
        /// <summary>
        /// 运营商编制的设备ID，运营商系统内全局唯一；且必须与收单接口中的“terminal_id"保持一致；（重要）
        /// </summary>
        public string terminal_id { get; set; }
        /// <summary>
        /// 设备生产厂商的支付宝PID   符合扫脸模块改造以及sdk模块改造政策激励的设备，必须在此字段填写返佣账户；同时设备类型machine_type需传入对应的扫脸设备类型；（非常重要）
        /// </summary>
        public string product_user_id { get; set; }
        /// <summary>
        /// 与支付宝签约合作协议的商家支付宝账户，此账号必须与签约收单产品的pid、签约支付宝运营激励协议的pid保持一致；该账户用于接受支付宝运营激励的返佣款。（非常重要）
        /// </summary>
        public string merchant_user_id { get; set; }

        /// <summary>
        /// 必须与实际设备类型保持一致；枚举类型如下：（如不确定，可与支付宝商务经理确认）
        /// </summary>
        public string machine_type { get; set; }
        /// <summary>
        /// 合作类型，必须与实际设备类型保持一致；枚举类型如下：（重要，具体传值需要与支付宝商务经理确认）
        /// 枚举类型目前有COOPERATION_CONTRACT(新签合约机), 
        /// COOPERATION_EXCLUSIVE(定制机), 
        /// COOPERATION_REFORM(改造机), 
        /// COOPERATION_STOCK(存量智能机), 
        /// COOPERATION_OTHER(其他)
        /// </summary>
        public string machine_cooperation_type { get; set; }
        /// <summary>
        /// 机具实际布放时间；（实际结算按照设备入驻上传的时间为准）
        /// </summary>
        public string machine_delivery_date { get; set; }
        /// <summary>
        /// 采购设备时采购订单对应的支付宝交易号，可以不传；仅当该设备是在支付宝商家服务平台采购的，才传入支付宝交易号；
        /// </summary>
        public string trade_no { get; set; }
        /// <summary>
        /// 机具名称，一般采用厂商名称的简称作为设备名称
        /// </summary>
        public string machine_name { get; set; }
        /// <summary>
        /// 自助售货机地址信息，机具接收方的地址；    行政区划代码可参考： https://render.alipay.com/p/f/fd-jp40xpc9/index.html
        /// </summary>
        public delivery_address_model delivery_address { get; set; }
        /// <summary>
        /// 自助售卖机点位地址，机具运营的地址；（重要）   行政区划代码可参考：https://render.alipay.com/p/f/fd-jp40xpc9/index.html
        /// </summary>
        public point_position_model point_position { get; set; }
        /// <summary>
        ///运营商类型，（具体传值需要与支付宝商务经理确认） 
        ///枚举类型目前有 
        ///ALIPAY_MERCHANT(支付宝商家，指的收钱码商户), 
        ///DISTRIBUTOR(渠道商，指拓展点位的人), 
        ///ISV(ISV服务商，软件开发服务商), 
        ///OPERATOR_MERCHANT(运营商)
        /// </summary>
        public string merchant_user_type { get; set; }
        /// <summary>
        /// 售卖机合作伙伴信息。  
        ///（associate_type）传值 DISTRIBUTORS，合作伙伴类型填渠道商； 
        ///（associate_user_id）合作伙伴的支付宝账号ID填渠道商的PID，（与merchant_user_id参数值一致）该PID必须与签约支付宝渠道/运营激励协议的PID保持一致；该账户用于接受支付宝渠道激励的返佣款。（非常重要，渠道激励费用根据运营商/ISV上传的这个字段里的PID，同时校验签约的销售方案校验，给到渠道激励。如运营商自己就是渠道商，则这个字段也需要填，如运营商是通过渠道商如K12行业ISV落地的设备，运营商要拿到渠道商的PID填写进去）
        /// </summary>
        public associate_model associate { get; set; }
        /// <summary>
        /// 售卖机场景信息，分为一级场景和二级场景，具体参考scene说明（重要，需传） 
        /// </summary>
        public scene_model scene { get; set; }
    }

    public class associate_model
    {
        /// <summary>
        /// 合作伙伴类型 DISTRIBUTORS:渠道商
        /// </summary>
        public string associate_type { get; set; }
        /// <summary>
        /// 合作伙伴的支付宝账号ID 
        /// </summary>
        public string associate_user_id { get; set; }
    }

    public class scene_model
    {
        /// <summary>
        /// SCHOOL 学校  001幼儿园和早教机构,002小学，003初中，004高中&职业技术学院，005大学，006培训机构，007其他
        /// MALL 商业场所 001商场，002酒店，003 4S店，004步行街，005其他 
        /// STATION 商业场所 001机场，002火车站，003汽车站，004地铁站，005其他
        /// FACTORY 工厂 001工厂
        /// COMMUNITY 社区 	 001社区
        /// OFFICE 办公楼 001办公楼
        /// HOSPITAL 医院 001医院
        /// GOVERNMENT 政府机构 001政府机构  
        /// SCENIC_SPOT 旅游景点 001旅游景点
        /// OTHERS 其他 001其他
        /// </summary>
        public string level_1 { get; set; }

        public string level_2 { get; set; }
    }


    public class delivery_address_model
    {
        /// <summary>
        /// 行政区代码-区，使用国家行 政区划代码
        /// </summary>
        public long area_code { get; set; }
        /// <summary>
        /// 自助售货机地址
        /// </summary>
        public string machine_address { get; set; }
        /// <summary>
        /// 行政区代码-省，使用国家行 政区划代码
        /// </summary>
        public long province_code { get; set; }
        /// <summary>
        /// 行政区代码-市，使用国家行 政区划代码
        /// </summary>
        public long city_code { get; set; }
    }
    public class point_position_model : delivery_address_model
    {
        /// <summary>
        /// 运营商类型    ALIPAY_MERCHANT(支付宝商家),DISTRIBUTOR(渠道商),ISV(ISV服务商),OPERATOR_MERCHANT(运营商)
        /// </summary>
        public string merchant_user_type { get; set; } = "ALIPAY_MERCHANT";
    }


    public class area_code
    {
        public int code { get; set; }

        public int lv { get; set; }

        public string name { get; set; } 
        public List<area_code> areaList { get; set; }
    }
 
}
